#pragma once

#include <QString>
#include "elementInformation.h"
#include "../math/Vector3.h"
#include "../renderer/color.h"

namespace PBVP {
	/// 
	class Atom {
	public:
		Atom();
		///
		Atom(const QString& atomName, const QString& resName = "");
		/// 
		~Atom() {}

		Vector3 position;
		QString name;
		char chainID;		// The chain to which the atom belongs
		int atomIndex;
		QString residueName; // The residue to which the atom belongs
		int residueIndex;
		// If true, the atom is a member of the macromolecule's backbone
		bool onBackbone;
		Color color;

		float radius;
		float solventEnlargedRadius;


		static bool isValidAtomSymbol(char c);
		static bool isValidAtomSymbol2(char c1, char c2);
		static bool isValidAtomSymbol(const QString& symbol);

		static int lookupAtom(const QString& atomName, const QString& resName = "");

		static const int elementCharMasks[26];

	};
}